Poisson Surface Reconstruction

During my research and development internship at C4W, a company specialized in 3D surface reconstruction from scanner data, I was involved in a project aimed at reconstructing "clean" digital surfaces. This internship, conducted in the company's open space in Montpellier from May to November 2016, focused on creating a reconstruction algorithm for Computer-Aided Design (CAD) applications, particularly for modeling dental aligners for healthcare professionals.

Tasks & Objectives

My role was to develop a first algorithmic solution to reconstruct a 3D surface from oriented point clouds generated by a scanner. The main objective was to synthesize this data into a mathematical function and derive a usable 3D surface. The success of this task depended on the visual quality of the results and the algorithm's execution speed, with a maximum computation time constraint of 10 seconds, suitable for CAD tools.

Actions and Development

To achieve these objectives, I first thoroughly studied the scientific paper by Kazhdan and Bolibho, which proposed a surface reconstruction algorithm based on the Poisson equation. I then integrated this solution into C4W's software, while simultaneously developing a proprietary version of the "Marching Cube" algorithm, essential for visualizing the reconstructed surface. I faced several challenges, such as the need to create a proprietary version of the algorithm to bypass open-source license limitations, and managing large mesh dimensions that posed memory storage issues. I also had to optimize C++ compilation to avoid excessive computation times. Throughout the project, my decisions were guided by business needs and software performance constraints.

Results

The project resulted in a functional "Marching Cube" algorithm capable of reconstructing quality 3D surfaces within reasonable timeframes. Success was measured by comparing the distance between original and reconstructed meshes, as well as evaluating the defect rate that could make 3D printing impossible. In the long term, this work particularly benefited dental aligner development, with enthusiastic feedback from the orthodontic project managers. I also acquired new technical skills, particularly in GPU programming (CUDA) to accelerate calculations, as well as in adaptive Octree management and algorithmic reconstruction optimization.

Technical Stack

The project relies on the following tools and technologies:

  • Programming Language : C++
  • Development Environment : Visual Studio
  • GPU Acceleration : CUDA
  • Data Structures : Adaptive Octrees
  • Algorithm : Poisson Reconstruction, Marching Cube

It is important to note that this technical stack was imposed by the company. The major technical challenges encountered include:

  • Slowness issues related to matrix operation configuration during compilation
  • Complexity of GPU programming
  • Reproduction of the Poisson reconstruction algorithm